home *** CD-ROM | disk | FTP | other *** search
Wrap
package javax.swing; import java.awt.AWTEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.io.Serializable; import java.util.StringTokenizer; public class KeyStroke implements Serializable { private static final Object pressedCharCacheKey = new StringBuffer("KeyStroke.pressedCharCacheKey"); private static final Object releasedCharCacheKey = new StringBuffer("KeyStroke.releasedCharCacheKey"); private static final Object pressedCodeCacheKey = new StringBuffer("KeyStroke.pressedCodeCacheKey"); private static final Object releasedCodeCacheKey = new StringBuffer("KeyStroke.releasedCodeCacheKey"); char keyChar; int keyCode; int modifiers; boolean onKeyRelease; static final int MIN_ASCII_CACHE_INDEX = 10; static final int MAX_ASCII_CACHE_INDEX = 127; private static final Object classLock = new Object(); private static ModifierKeyword[] modifierKeywords = new ModifierKeyword[]{new ModifierKeyword("shift", 1), new ModifierKeyword("control", 2), new ModifierKeyword("ctrl", 2), new ModifierKeyword("meta", 4), new ModifierKeyword("alt", 8), new ModifierKeyword("button1", 16), new ModifierKeyword("button2", 8), new ModifierKeyword("button3", 4)}; // $FF: synthetic field static Class class$java$awt$event$KeyEvent; private KeyStroke() { } static void cacheKeyCharKeyStroke(KeyStroke var0, boolean var1) { if (var0.keyChar >= '\n' && var0.keyChar < 127) { Object var2 = classLock; synchronized(var2){} try { if (var1) { KeyStroke[] var4 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey); if (var4 == null) { var4 = new KeyStroke[117]; SwingUtilities.appContextPut(releasedCharCacheKey, var4); } var4[var0.keyChar - 10] = var0; } else { KeyStroke[] var7 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey); if (var7 == null) { var7 = new KeyStroke[117]; SwingUtilities.appContextPut(pressedCharCacheKey, var7); } var7[var0.keyChar - 10] = var0; } } catch (Throwable var6) { throw var6; } } } static void cacheKeyStroke(KeyStroke var0) { int var1 = -1; if (var0.keyCode >= 10 && var0.keyCode < 127 && (var1 = subIndexForModifier(var0.modifiers)) != -1) { Object var2 = classLock; synchronized(var2){} try { Object var4 = null; KeyStroke[][] var9; if (var0.onKeyRelease) { KeyStroke[][] var5 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey); if (var5 == null) { var5 = new KeyStroke[4][117]; SwingUtilities.appContextPut(pressedCodeCacheKey, var5); } var9 = var5; } else { KeyStroke[][] var10 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey); if (var10 == null) { var10 = new KeyStroke[4][117]; SwingUtilities.appContextPut(releasedCodeCacheKey, var10); } var9 = var10; } var9[var1][var0.keyCode - 10] = var0; } catch (Throwable var7) { throw var7; } } } // $FF: synthetic method static Class class$(String var0) { try { return Class.forName(var0); } catch (ClassNotFoundException var2) { throw new NoClassDefFoundError(((Throwable)var2).getMessage()); } } public boolean equals(Object var1) { if (var1 instanceof KeyStroke) { KeyStroke var2 = (KeyStroke)var1; if (var2.keyChar == this.keyChar && var2.keyCode == this.keyCode && var2.onKeyRelease == this.onKeyRelease && var2.modifiers == this.modifiers) { return true; } } return false; } static KeyStroke getCachedKeyCharKeyStroke(char var0, boolean var1) { KeyStroke var2 = null; if (var0 >= '\n' && var0 < 127) { Object var3 = classLock; synchronized(var3){} try { KeyStroke[] var5; if (var1) { var5 = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey); } else { var5 = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey); } if (var5 != null) { var2 = var5[var0 - 10]; } } catch (Throwable var7) { throw var7; } } return var2; } static KeyStroke getCachedKeyStroke(int var0, int var1, boolean var2) { KeyStroke var4 = null; int var3; if (var0 >= 10 && var0 < 127 && (var3 = subIndexForModifier(var1)) != -1) { Object var5 = classLock; synchronized(var5){} try { KeyStroke[][] var7; if (var2) { var7 = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey); } else { var7 = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey); } if (var7 != null) { var4 = var7[var3][var0 - 10]; } } catch (Throwable var9) { throw var9; } } return var4; } public char getKeyChar() { return this.keyChar; } public int getKeyCode() { return this.keyCode; } public static KeyStroke getKeyStroke(char var0) { return getKeyStroke(var0, false); } /** @deprecated */ public static KeyStroke getKeyStroke(char var0, boolean var1) { KeyStroke var2 = getCachedKeyCharKeyStroke(var0, var1); if (var2 == null) { var2 = new KeyStroke(); var2.keyChar = var0; var2.modifiers = 0; var2.onKeyRelease = var1; cacheKeyCharKeyStroke(var2, var1); } return var2; } public static KeyStroke getKeyStroke(int var0, int var1) { return getKeyStroke(var0, var1, false); } public static KeyStroke getKeyStroke(int var0, int var1, boolean var2) { KeyStroke var3 = getCachedKeyStroke(var0, var1, var2); if (var3 == null) { var3 = new KeyStroke(); var3.keyCode = var0; var3.modifiers = var1; var3.onKeyRelease = var2; cacheKeyStroke(var3); } return var3; } public static KeyStroke getKeyStroke(String var0) { StringTokenizer var1 = new StringTokenizer(var0); String var2; int var4; for(int var3 = 0; (var2 = var1.nextToken()) != null; var3 |= var4) { var4 = 0; for(int var5 = 0; var4 == 0 && var5 < modifierKeywords.length; ++var5) { var4 = modifierKeywords[var5].getModifierMask(var2); } if (var4 == 0) { String var6 = versionMap("VK_" + var2); int var7; try { var7 = (class$java$awt$event$KeyEvent != null ? class$java$awt$event$KeyEvent : (class$java$awt$event$KeyEvent = class$("java.awt.event.KeyEvent"))).getField(var6).getInt(class$java$awt$event$KeyEvent != null ? class$java$awt$event$KeyEvent : (class$java$awt$event$KeyEvent = class$("java.awt.event.KeyEvent"))); } catch (Exception var9) { ((Throwable)var9).printStackTrace(); throw new Error("Unrecognized keycode name: " + var6); } return getKeyStroke(var7, var3); } } throw new Error("Can't parse KeyStroke: \"" + var0 + "\""); } public static KeyStroke getKeyStrokeForEvent(KeyEvent var0) { KeyStroke var1 = null; switch (((AWTEvent)var0).getID()) { case 400: var1 = getKeyStroke(var0.getKeyChar()); break; case 401: var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), false); break; case 402: var1 = getKeyStroke(var0.getKeyCode(), ((InputEvent)var0).getModifiers(), true); } return var1; } public int getModifiers() { return this.modifiers; } private static String getStringRepresentation(char var0, int var1, boolean var2) { return "keyChar " + KeyEvent.getKeyModifiersText(var1) + var0 + (var2 ? "-R" : "-P"); } private static String getStringRepresentation(int var0, int var1, boolean var2) { return "keyCode " + KeyEvent.getKeyModifiersText(var1) + KeyEvent.getKeyText(var0) + (var2 ? "-R" : "-P"); } public int hashCode() { return (this.keyChar + 1) * 2 * (this.keyCode + 1) * (this.modifiers + 1) + (this.onKeyRelease ? 1 : 2); } public boolean isOnKeyRelease() { return this.onKeyRelease; } static int subIndexForModifier(int var0) { if (var0 == 0) { return 0; } else if (var0 == 1) { return 1; } else if (var0 == 2) { return 2; } else { return var0 == 8 ? 3 : -1; } } public String toString() { return this.keyChar == 0 ? getStringRepresentation(this.keyCode, this.modifiers, this.onKeyRelease) : getStringRepresentation((char)this.keyChar, 0, this.onKeyRelease); } private static String versionMap(String var0) { if (!SwingUtilities.is1dot2) { if (var0.equals("VK_KP_UP")) { var0 = "VK_UP"; } if (var0.equals("VK_KP_DOWN")) { var0 = "VK_DOWN"; } if (var0.equals("VK_KP_LEFT")) { var0 = "VK_LEFT"; } if (var0.equals("VK_KP_RIGHT")) { var0 = "VK_RIGHT"; } } return var0; } }